package transaction

import (
	"bytes"
	"publicChainSystem/tools"
	"publicChainSystem/wallet"
)

/**
 *@author:zhengyilong
 *@email:1797344574@qq.com
 *@phone:13479394730
 *@DateTime:2022/4/18 9:38
 **/

//交易输入的结构体
type Input struct {
	//确认要消费的交易输出在哪个交易中
	TXid []byte
	//交易输出索引位置
	Vout int
	//解锁脚本（由签名和公钥组成）
	//ScriptSig []byte
	Sig []byte //签名
	Pubk []byte //公钥
}

func NewInput(txid []byte,vout int,sig []byte,pubk []byte) Input {
	return Input{txid,vout,sig,pubk}
}

//判断input是某个人的消费
func (input *Input) Islocked(name string)bool {
	if name == "" {
		return false
	}

	//求出某个人的公钥哈希
	pubHash, err := wallet.GetPubHash(name)
	if err != nil {
		return false
	}

	//求出这个input的公钥哈希
	pub_sha256 := tools.GetHash(input.Pubk)
	pubhash2 := tools.Ripemd160(pub_sha256)

	return bytes.Compare(pubHash,pubhash2) == 0
}